目前主要支持的oauth协议
一、 密码模式
密码模式(password)主要针对自家应用,可信度较高,所以可以使用简便安全共存的模式,操作步骤如下
- 调用 http://localhost/blade-auth/oauth/token 传入对应的参数
请求头:
Tenant-Id
:000000
(替换为对应的租户id)Authorization : Basic c3dvcmQ6c3dvcmRfc2VjcmV0
("c3dvcmQ6c3dvcmRfc2VjcmV0"为clientId:clientSecret串转换为的base64编码,需要和blade_client
表的对应字段相匹配)表单:
grant_type
:password
scope
:all
username
:admin
password
:21232f297a57a5a743894a0e4a801fc3
注意:其中的
sword
和sword_secret
分别是blade_client
表client_id
和client_secret
字段值,请一一对应。注意:框架对密码进行了二次加密,由前端调用传参需要现将原密码进行md5加密后再进行传递,原密码是
admin
,所以md5加密后是21232f297a57a5a743894a0e4a801fc3
,具体如下
- 若想避免填写错误,快速导入参数,可以参考这个帖子:https://sns.bladex.vip/article-14982.html
调用认证接口返回结果
二、刷新token
刷新token(refresh_token)存在时间会比access_token更长,主要用于access_token快过期的时候,调用oauth接口获取到刷新后的token以达到token续期的目的
- 调用 http://localhost/blade-auth/oauth/token 传入对应的参数
请求头:
Tenant-Id
:000000
(替换为对应的租户id)Authorization : Basic c3dvcmQ6c3dvcmRfc2VjcmV0
("c3dvcmQ6c3dvcmRfc2VjcmV0"为clientId:clientSecret串转换为的base64编码)表单:
grant_type
:refresh_token
scope
:all
refresh_token
:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXN0IjoidGVzdCIsInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsiYWxsIl0sImV4cCI6MTU1MzE2MTA5NSwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjE0YmMyYjAyLTgxY2UtNDFiNC04ZTI3LTA5YWE0ZmU4ZWMwYyIsImNsaWVudF9pZCI6ImJsYWRlIn0.jTmioQDq-fSNNn7YCwl3wP0JE-etSWtzLDe545mDbP4
三、 授权码模式
授权码模式(authorization_code)主要针对第三方应用,是最为复杂也最为安全的一种模式,操作步骤如下
- 打开浏览器访问如下地址:http://localhost:8100/oauth/authorize?tenant_id=000000&client_id=sword&redirect_uri=http://localhost:8888&code=233333&response_type=code
- 输入用户名为
admin
,密码为md5(admin)也就是上文提到的21232f297a57a5a743894a0e4a801fc3
- 点击Authorize按钮,通过授权
- 系统自动跳转至http://localhost:8888并加上了code参数
- 获取跳转后的code值(http://localhost:8888/?code=VhYNLR)之后,调用 http://localhost/blade-auth/oauth/token 传入对应的参数
- 请求头:
Tenant-Id
:000000
(替换为对应的租户id)Authorization : Basic c3dvcmQ6c3dvcmRfc2VjcmV0
("c3dvcmQ6c3dvcmRfc2VjcmV0"为clientId:clientSecret串转换为的base64编码,需要和blade_client
表的对应字段相匹配) - 表单:
grant_type
:authorization_code
scope
:all
code
:VhYNLR
redirect_uri
:http://localhost:8888
- 注意:
其中的sword
和sword_secret
分别是blade_client
表client_id
和client_secret
字段值,请一一对应。
其中的http://localhost:8888
是blade_client
表的web_server_redirect_uri
字段值,也请一一对应。
四、获取到token后如何获取用户信息
- 拼接请求头
Authorization :bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXN0IjoidGVzdCIsInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsiYWxsIl0sImV4cCI6MTU1MzE2MTA5NSwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjE0YmMyYjAyLTgxY2UtNDFiNC04ZTI3LTA5YWE0ZmU4ZWMwYyIsImNsaWVudF9pZCI6ImJsYWRlIn0.jTmioQDq-fSNNn7YCwl3wP0JE-etSWtzLDe545mDbP4
- 调用 http://localhost/blade-auth/oauth/user-info 既可获得对应用户信息